package Analizadores.Estructuras;

import java.util.ArrayList;
import java.util.Iterator;

import Analizadores.Estructuras.Tipos.Token;

// estructura para guardas la lista de tokens generados
public class TokenList {

	private ArrayList<Token> lista;//array para guardar los tokens
	private int indice;//indice necesario para recorrer el array en el sintactico
	
	//constructora
	public TokenList(){
		lista = new ArrayList<Token>();
		indice = 0;
	}
	//getter
	public ArrayList<Token> getLista(){
		return lista;
	}
	//funcion para añadir un token
	public void anadir(Token t){
		
		lista.add(t);
	}
	//funcion para borrar un token
	public void quitaToken(){
		lista.remove(lista.size()-1);
	}
	//metodo para poder sacar por pantalla la lista de tokens
	public String toString(){
		String s = "****************************************\n";
		Iterator<Token> it = lista.iterator();
		while(it.hasNext()){
			
			s += it.next() + "\n";
		}
		return s;		
	}
	//metodo para obtener el token por el que el indice indica, al hacerlo el indice aumenta 1
	public Token getToken(){
		if (indice < lista.size()){
			Token t = lista.get(indice);
			indice++;
			return t;
		}
		else return null;
	}
	//metodo para poder ver algun token mas alla del que estamos sin tener que consumirlo
	public Token mirarToken(int i){
		Token t = lista.get(indice + i -1);
		return t;
	}
}


